(0) Obligation:

Clauses:

append(nil, XS, XS).
append(cons(X, XS), YS, cons(X, ZS)) :- append(XS, YS, ZS).
reverse(nil, nil).
reverse(cons(X, nil), cons(X, nil)).
reverse(cons(X, XS), YS) :- ','(reverse(XS, ZS), append(ZS, cons(X, nil), YS)).
shuffle(nil, nil).
shuffle(cons(X, XS), cons(X, YS)) :- ','(reverse(XS, ZS), shuffle(ZS, YS)).
query(XS) :- shuffle(cons(X, XS), YS).

Query: query(g)

(1) PrologToDTProblemTransformerProof (SOUND transformation)

Built DT problem from termination graph DT10.

(2) Obligation:

Triples:

reverseA(cons(X1, X2), X3) :- reverseA(X2, X4).
reverseA(cons(X1, X2), X3) :- ','(reversecA(X2, X4), appendB(X4, X1, X3)).
appendB(cons(X1, X2), X3, cons(X1, X4)) :- appendB(X2, X3, X4).
pC(X1, X2, X3) :- reverseA(X1, X2).
pC(X1, cons(X2, X3), cons(X2, X4)) :- ','(reversecA(X1, cons(X2, X3)), pC(X3, X5, X4)).
queryD(X1) :- pC(X1, X2, X3).

Clauses:

reversecA(nil, nil).
reversecA(cons(X1, nil), cons(X1, nil)).
reversecA(cons(X1, X2), X3) :- ','(reversecA(X2, X4), appendcB(X4, X1, X3)).
appendcB(nil, X1, cons(X1, nil)).
appendcB(cons(X1, X2), X3, cons(X1, X4)) :- appendcB(X2, X3, X4).
qcC(X1, nil, nil) :- reversecA(X1, nil).
qcC(X1, cons(X2, X3), cons(X2, X4)) :- ','(reversecA(X1, cons(X2, X3)), qcC(X3, X5, X4)).

Afs:

queryD(x1)  =  queryD(x1)

(3) TriplesToPiDPProof (SOUND transformation)

We use the technique of [DT09]. With regard to the inferred argument filtering the predicates were used in the following modes:
queryD_in: (b)
pC_in: (b,f,f)
reverseA_in: (b,f)
reversecA_in: (b,f)
appendcB_in: (b,f,f)
appendB_in: (b,f,f)
Transforming TRIPLES into the following Term Rewriting System:
Pi DP problem:
The TRS P consists of the following rules:

QUERYD_IN_G(X1) → U8_G(X1, pC_in_gaa(X1, X2, X3))
QUERYD_IN_G(X1) → PC_IN_GAA(X1, X2, X3)
PC_IN_GAA(X1, X2, X3) → U5_GAA(X1, X2, X3, reverseA_in_ga(X1, X2))
PC_IN_GAA(X1, X2, X3) → REVERSEA_IN_GA(X1, X2)
REVERSEA_IN_GA(cons(X1, X2), X3) → U1_GA(X1, X2, X3, reverseA_in_ga(X2, X4))
REVERSEA_IN_GA(cons(X1, X2), X3) → REVERSEA_IN_GA(X2, X4)
REVERSEA_IN_GA(cons(X1, X2), X3) → U2_GA(X1, X2, X3, reversecA_in_ga(X2, X4))
U2_GA(X1, X2, X3, reversecA_out_ga(X2, X4)) → U3_GA(X1, X2, X3, appendB_in_gaa(X4, X1, X3))
U2_GA(X1, X2, X3, reversecA_out_ga(X2, X4)) → APPENDB_IN_GAA(X4, X1, X3)
APPENDB_IN_GAA(cons(X1, X2), X3, cons(X1, X4)) → U4_GAA(X1, X2, X3, X4, appendB_in_gaa(X2, X3, X4))
APPENDB_IN_GAA(cons(X1, X2), X3, cons(X1, X4)) → APPENDB_IN_GAA(X2, X3, X4)
PC_IN_GAA(X1, cons(X2, X3), cons(X2, X4)) → U6_GAA(X1, X2, X3, X4, reversecA_in_ga(X1, cons(X2, X3)))
U6_GAA(X1, X2, X3, X4, reversecA_out_ga(X1, cons(X2, X3))) → U7_GAA(X1, X2, X3, X4, pC_in_gaa(X3, X5, X4))
U6_GAA(X1, X2, X3, X4, reversecA_out_ga(X1, cons(X2, X3))) → PC_IN_GAA(X3, X5, X4)

The TRS R consists of the following rules:

reversecA_in_ga(nil, nil) → reversecA_out_ga(nil, nil)
reversecA_in_ga(cons(X1, nil), cons(X1, nil)) → reversecA_out_ga(cons(X1, nil), cons(X1, nil))
reversecA_in_ga(cons(X1, X2), X3) → U10_ga(X1, X2, X3, reversecA_in_ga(X2, X4))
U10_ga(X1, X2, X3, reversecA_out_ga(X2, X4)) → U11_ga(X1, X2, X3, appendcB_in_gaa(X4, X1, X3))
appendcB_in_gaa(nil, X1, cons(X1, nil)) → appendcB_out_gaa(nil, X1, cons(X1, nil))
appendcB_in_gaa(cons(X1, X2), X3, cons(X1, X4)) → U12_gaa(X1, X2, X3, X4, appendcB_in_gaa(X2, X3, X4))
U12_gaa(X1, X2, X3, X4, appendcB_out_gaa(X2, X3, X4)) → appendcB_out_gaa(cons(X1, X2), X3, cons(X1, X4))
U11_ga(X1, X2, X3, appendcB_out_gaa(X4, X1, X3)) → reversecA_out_ga(cons(X1, X2), X3)

The argument filtering Pi contains the following mapping:
pC_in_gaa(x1, x2, x3)  =  pC_in_gaa(x1)
reverseA_in_ga(x1, x2)  =  reverseA_in_ga(x1)
cons(x1, x2)  =  cons(x2)
reversecA_in_ga(x1, x2)  =  reversecA_in_ga(x1)
nil  =  nil
reversecA_out_ga(x1, x2)  =  reversecA_out_ga(x1, x2)
U10_ga(x1, x2, x3, x4)  =  U10_ga(x2, x4)
U11_ga(x1, x2, x3, x4)  =  U11_ga(x2, x4)
appendcB_in_gaa(x1, x2, x3)  =  appendcB_in_gaa(x1)
appendcB_out_gaa(x1, x2, x3)  =  appendcB_out_gaa(x1, x3)
U12_gaa(x1, x2, x3, x4, x5)  =  U12_gaa(x2, x5)
appendB_in_gaa(x1, x2, x3)  =  appendB_in_gaa(x1)
QUERYD_IN_G(x1)  =  QUERYD_IN_G(x1)
U8_G(x1, x2)  =  U8_G(x1, x2)
PC_IN_GAA(x1, x2, x3)  =  PC_IN_GAA(x1)
U5_GAA(x1, x2, x3, x4)  =  U5_GAA(x1, x4)
REVERSEA_IN_GA(x1, x2)  =  REVERSEA_IN_GA(x1)
U1_GA(x1, x2, x3, x4)  =  U1_GA(x2, x4)
U2_GA(x1, x2, x3, x4)  =  U2_GA(x2, x4)
U3_GA(x1, x2, x3, x4)  =  U3_GA(x2, x4)
APPENDB_IN_GAA(x1, x2, x3)  =  APPENDB_IN_GAA(x1)
U4_GAA(x1, x2, x3, x4, x5)  =  U4_GAA(x2, x5)
U6_GAA(x1, x2, x3, x4, x5)  =  U6_GAA(x1, x5)
U7_GAA(x1, x2, x3, x4, x5)  =  U7_GAA(x1, x5)

We have to consider all (P,R,Pi)-chains

Infinitary Constructor Rewriting Termination of PiDP implies Termination of TRIPLES

(4) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

QUERYD_IN_G(X1) → U8_G(X1, pC_in_gaa(X1, X2, X3))
QUERYD_IN_G(X1) → PC_IN_GAA(X1, X2, X3)
PC_IN_GAA(X1, X2, X3) → U5_GAA(X1, X2, X3, reverseA_in_ga(X1, X2))
PC_IN_GAA(X1, X2, X3) → REVERSEA_IN_GA(X1, X2)
REVERSEA_IN_GA(cons(X1, X2), X3) → U1_GA(X1, X2, X3, reverseA_in_ga(X2, X4))
REVERSEA_IN_GA(cons(X1, X2), X3) → REVERSEA_IN_GA(X2, X4)
REVERSEA_IN_GA(cons(X1, X2), X3) → U2_GA(X1, X2, X3, reversecA_in_ga(X2, X4))
U2_GA(X1, X2, X3, reversecA_out_ga(X2, X4)) → U3_GA(X1, X2, X3, appendB_in_gaa(X4, X1, X3))
U2_GA(X1, X2, X3, reversecA_out_ga(X2, X4)) → APPENDB_IN_GAA(X4, X1, X3)
APPENDB_IN_GAA(cons(X1, X2), X3, cons(X1, X4)) → U4_GAA(X1, X2, X3, X4, appendB_in_gaa(X2, X3, X4))
APPENDB_IN_GAA(cons(X1, X2), X3, cons(X1, X4)) → APPENDB_IN_GAA(X2, X3, X4)
PC_IN_GAA(X1, cons(X2, X3), cons(X2, X4)) → U6_GAA(X1, X2, X3, X4, reversecA_in_ga(X1, cons(X2, X3)))
U6_GAA(X1, X2, X3, X4, reversecA_out_ga(X1, cons(X2, X3))) → U7_GAA(X1, X2, X3, X4, pC_in_gaa(X3, X5, X4))
U6_GAA(X1, X2, X3, X4, reversecA_out_ga(X1, cons(X2, X3))) → PC_IN_GAA(X3, X5, X4)

The TRS R consists of the following rules:

reversecA_in_ga(nil, nil) → reversecA_out_ga(nil, nil)
reversecA_in_ga(cons(X1, nil), cons(X1, nil)) → reversecA_out_ga(cons(X1, nil), cons(X1, nil))
reversecA_in_ga(cons(X1, X2), X3) → U10_ga(X1, X2, X3, reversecA_in_ga(X2, X4))
U10_ga(X1, X2, X3, reversecA_out_ga(X2, X4)) → U11_ga(X1, X2, X3, appendcB_in_gaa(X4, X1, X3))
appendcB_in_gaa(nil, X1, cons(X1, nil)) → appendcB_out_gaa(nil, X1, cons(X1, nil))
appendcB_in_gaa(cons(X1, X2), X3, cons(X1, X4)) → U12_gaa(X1, X2, X3, X4, appendcB_in_gaa(X2, X3, X4))
U12_gaa(X1, X2, X3, X4, appendcB_out_gaa(X2, X3, X4)) → appendcB_out_gaa(cons(X1, X2), X3, cons(X1, X4))
U11_ga(X1, X2, X3, appendcB_out_gaa(X4, X1, X3)) → reversecA_out_ga(cons(X1, X2), X3)

The argument filtering Pi contains the following mapping:
pC_in_gaa(x1, x2, x3)  =  pC_in_gaa(x1)
reverseA_in_ga(x1, x2)  =  reverseA_in_ga(x1)
cons(x1, x2)  =  cons(x2)
reversecA_in_ga(x1, x2)  =  reversecA_in_ga(x1)
nil  =  nil
reversecA_out_ga(x1, x2)  =  reversecA_out_ga(x1, x2)
U10_ga(x1, x2, x3, x4)  =  U10_ga(x2, x4)
U11_ga(x1, x2, x3, x4)  =  U11_ga(x2, x4)
appendcB_in_gaa(x1, x2, x3)  =  appendcB_in_gaa(x1)
appendcB_out_gaa(x1, x2, x3)  =  appendcB_out_gaa(x1, x3)
U12_gaa(x1, x2, x3, x4, x5)  =  U12_gaa(x2, x5)
appendB_in_gaa(x1, x2, x3)  =  appendB_in_gaa(x1)
QUERYD_IN_G(x1)  =  QUERYD_IN_G(x1)
U8_G(x1, x2)  =  U8_G(x1, x2)
PC_IN_GAA(x1, x2, x3)  =  PC_IN_GAA(x1)
U5_GAA(x1, x2, x3, x4)  =  U5_GAA(x1, x4)
REVERSEA_IN_GA(x1, x2)  =  REVERSEA_IN_GA(x1)
U1_GA(x1, x2, x3, x4)  =  U1_GA(x2, x4)
U2_GA(x1, x2, x3, x4)  =  U2_GA(x2, x4)
U3_GA(x1, x2, x3, x4)  =  U3_GA(x2, x4)
APPENDB_IN_GAA(x1, x2, x3)  =  APPENDB_IN_GAA(x1)
U4_GAA(x1, x2, x3, x4, x5)  =  U4_GAA(x2, x5)
U6_GAA(x1, x2, x3, x4, x5)  =  U6_GAA(x1, x5)
U7_GAA(x1, x2, x3, x4, x5)  =  U7_GAA(x1, x5)

We have to consider all (P,R,Pi)-chains

(5) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LOPSTR] contains 3 SCCs with 10 less nodes.

(6) Complex Obligation (AND)

(7) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

APPENDB_IN_GAA(cons(X1, X2), X3, cons(X1, X4)) → APPENDB_IN_GAA(X2, X3, X4)

The TRS R consists of the following rules:

reversecA_in_ga(nil, nil) → reversecA_out_ga(nil, nil)
reversecA_in_ga(cons(X1, nil), cons(X1, nil)) → reversecA_out_ga(cons(X1, nil), cons(X1, nil))
reversecA_in_ga(cons(X1, X2), X3) → U10_ga(X1, X2, X3, reversecA_in_ga(X2, X4))
U10_ga(X1, X2, X3, reversecA_out_ga(X2, X4)) → U11_ga(X1, X2, X3, appendcB_in_gaa(X4, X1, X3))
appendcB_in_gaa(nil, X1, cons(X1, nil)) → appendcB_out_gaa(nil, X1, cons(X1, nil))
appendcB_in_gaa(cons(X1, X2), X3, cons(X1, X4)) → U12_gaa(X1, X2, X3, X4, appendcB_in_gaa(X2, X3, X4))
U12_gaa(X1, X2, X3, X4, appendcB_out_gaa(X2, X3, X4)) → appendcB_out_gaa(cons(X1, X2), X3, cons(X1, X4))
U11_ga(X1, X2, X3, appendcB_out_gaa(X4, X1, X3)) → reversecA_out_ga(cons(X1, X2), X3)

The argument filtering Pi contains the following mapping:
cons(x1, x2)  =  cons(x2)
reversecA_in_ga(x1, x2)  =  reversecA_in_ga(x1)
nil  =  nil
reversecA_out_ga(x1, x2)  =  reversecA_out_ga(x1, x2)
U10_ga(x1, x2, x3, x4)  =  U10_ga(x2, x4)
U11_ga(x1, x2, x3, x4)  =  U11_ga(x2, x4)
appendcB_in_gaa(x1, x2, x3)  =  appendcB_in_gaa(x1)
appendcB_out_gaa(x1, x2, x3)  =  appendcB_out_gaa(x1, x3)
U12_gaa(x1, x2, x3, x4, x5)  =  U12_gaa(x2, x5)
APPENDB_IN_GAA(x1, x2, x3)  =  APPENDB_IN_GAA(x1)

We have to consider all (P,R,Pi)-chains

(8) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(9) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

APPENDB_IN_GAA(cons(X1, X2), X3, cons(X1, X4)) → APPENDB_IN_GAA(X2, X3, X4)

R is empty.
The argument filtering Pi contains the following mapping:
cons(x1, x2)  =  cons(x2)
APPENDB_IN_GAA(x1, x2, x3)  =  APPENDB_IN_GAA(x1)

We have to consider all (P,R,Pi)-chains

(10) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(11) Obligation:

Q DP problem:
The TRS P consists of the following rules:

APPENDB_IN_GAA(cons(X2)) → APPENDB_IN_GAA(X2)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.

(12) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • APPENDB_IN_GAA(cons(X2)) → APPENDB_IN_GAA(X2)
    The graph contains the following edges 1 > 1

(13) YES

(14) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

REVERSEA_IN_GA(cons(X1, X2), X3) → REVERSEA_IN_GA(X2, X4)

The TRS R consists of the following rules:

reversecA_in_ga(nil, nil) → reversecA_out_ga(nil, nil)
reversecA_in_ga(cons(X1, nil), cons(X1, nil)) → reversecA_out_ga(cons(X1, nil), cons(X1, nil))
reversecA_in_ga(cons(X1, X2), X3) → U10_ga(X1, X2, X3, reversecA_in_ga(X2, X4))
U10_ga(X1, X2, X3, reversecA_out_ga(X2, X4)) → U11_ga(X1, X2, X3, appendcB_in_gaa(X4, X1, X3))
appendcB_in_gaa(nil, X1, cons(X1, nil)) → appendcB_out_gaa(nil, X1, cons(X1, nil))
appendcB_in_gaa(cons(X1, X2), X3, cons(X1, X4)) → U12_gaa(X1, X2, X3, X4, appendcB_in_gaa(X2, X3, X4))
U12_gaa(X1, X2, X3, X4, appendcB_out_gaa(X2, X3, X4)) → appendcB_out_gaa(cons(X1, X2), X3, cons(X1, X4))
U11_ga(X1, X2, X3, appendcB_out_gaa(X4, X1, X3)) → reversecA_out_ga(cons(X1, X2), X3)

The argument filtering Pi contains the following mapping:
cons(x1, x2)  =  cons(x2)
reversecA_in_ga(x1, x2)  =  reversecA_in_ga(x1)
nil  =  nil
reversecA_out_ga(x1, x2)  =  reversecA_out_ga(x1, x2)
U10_ga(x1, x2, x3, x4)  =  U10_ga(x2, x4)
U11_ga(x1, x2, x3, x4)  =  U11_ga(x2, x4)
appendcB_in_gaa(x1, x2, x3)  =  appendcB_in_gaa(x1)
appendcB_out_gaa(x1, x2, x3)  =  appendcB_out_gaa(x1, x3)
U12_gaa(x1, x2, x3, x4, x5)  =  U12_gaa(x2, x5)
REVERSEA_IN_GA(x1, x2)  =  REVERSEA_IN_GA(x1)

We have to consider all (P,R,Pi)-chains

(15) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(16) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

REVERSEA_IN_GA(cons(X1, X2), X3) → REVERSEA_IN_GA(X2, X4)

R is empty.
The argument filtering Pi contains the following mapping:
cons(x1, x2)  =  cons(x2)
REVERSEA_IN_GA(x1, x2)  =  REVERSEA_IN_GA(x1)

We have to consider all (P,R,Pi)-chains

(17) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(18) Obligation:

Q DP problem:
The TRS P consists of the following rules:

REVERSEA_IN_GA(cons(X2)) → REVERSEA_IN_GA(X2)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.

(19) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • REVERSEA_IN_GA(cons(X2)) → REVERSEA_IN_GA(X2)
    The graph contains the following edges 1 > 1

(20) YES

(21) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

PC_IN_GAA(X1, cons(X2, X3), cons(X2, X4)) → U6_GAA(X1, X2, X3, X4, reversecA_in_ga(X1, cons(X2, X3)))
U6_GAA(X1, X2, X3, X4, reversecA_out_ga(X1, cons(X2, X3))) → PC_IN_GAA(X3, X5, X4)

The TRS R consists of the following rules:

reversecA_in_ga(nil, nil) → reversecA_out_ga(nil, nil)
reversecA_in_ga(cons(X1, nil), cons(X1, nil)) → reversecA_out_ga(cons(X1, nil), cons(X1, nil))
reversecA_in_ga(cons(X1, X2), X3) → U10_ga(X1, X2, X3, reversecA_in_ga(X2, X4))
U10_ga(X1, X2, X3, reversecA_out_ga(X2, X4)) → U11_ga(X1, X2, X3, appendcB_in_gaa(X4, X1, X3))
appendcB_in_gaa(nil, X1, cons(X1, nil)) → appendcB_out_gaa(nil, X1, cons(X1, nil))
appendcB_in_gaa(cons(X1, X2), X3, cons(X1, X4)) → U12_gaa(X1, X2, X3, X4, appendcB_in_gaa(X2, X3, X4))
U12_gaa(X1, X2, X3, X4, appendcB_out_gaa(X2, X3, X4)) → appendcB_out_gaa(cons(X1, X2), X3, cons(X1, X4))
U11_ga(X1, X2, X3, appendcB_out_gaa(X4, X1, X3)) → reversecA_out_ga(cons(X1, X2), X3)

The argument filtering Pi contains the following mapping:
cons(x1, x2)  =  cons(x2)
reversecA_in_ga(x1, x2)  =  reversecA_in_ga(x1)
nil  =  nil
reversecA_out_ga(x1, x2)  =  reversecA_out_ga(x1, x2)
U10_ga(x1, x2, x3, x4)  =  U10_ga(x2, x4)
U11_ga(x1, x2, x3, x4)  =  U11_ga(x2, x4)
appendcB_in_gaa(x1, x2, x3)  =  appendcB_in_gaa(x1)
appendcB_out_gaa(x1, x2, x3)  =  appendcB_out_gaa(x1, x3)
U12_gaa(x1, x2, x3, x4, x5)  =  U12_gaa(x2, x5)
PC_IN_GAA(x1, x2, x3)  =  PC_IN_GAA(x1)
U6_GAA(x1, x2, x3, x4, x5)  =  U6_GAA(x1, x5)

We have to consider all (P,R,Pi)-chains

(22) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(23) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PC_IN_GAA(X1) → U6_GAA(X1, reversecA_in_ga(X1))
U6_GAA(X1, reversecA_out_ga(X1, cons(X3))) → PC_IN_GAA(X3)

The TRS R consists of the following rules:

reversecA_in_ga(nil) → reversecA_out_ga(nil, nil)
reversecA_in_ga(cons(nil)) → reversecA_out_ga(cons(nil), cons(nil))
reversecA_in_ga(cons(X2)) → U10_ga(X2, reversecA_in_ga(X2))
U10_ga(X2, reversecA_out_ga(X2, X4)) → U11_ga(X2, appendcB_in_gaa(X4))
appendcB_in_gaa(nil) → appendcB_out_gaa(nil, cons(nil))
appendcB_in_gaa(cons(X2)) → U12_gaa(X2, appendcB_in_gaa(X2))
U12_gaa(X2, appendcB_out_gaa(X2, X4)) → appendcB_out_gaa(cons(X2), cons(X4))
U11_ga(X2, appendcB_out_gaa(X4, X3)) → reversecA_out_ga(cons(X2), X3)

The set Q consists of the following terms:

reversecA_in_ga(x0)
U10_ga(x0, x1)
appendcB_in_gaa(x0)
U12_gaa(x0, x1)
U11_ga(x0, x1)

We have to consider all (P,Q,R)-chains.

(24) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04,JAR06].


The following pairs can be oriented strictly and are deleted.


PC_IN_GAA(X1) → U6_GAA(X1, reversecA_in_ga(X1))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:

POL(PC_IN_GAA(x1)) = 1 + x1   
POL(U10_ga(x1, x2)) = 1 + x2   
POL(U11_ga(x1, x2)) = x2   
POL(U12_gaa(x1, x2)) = 1 + x2   
POL(U6_GAA(x1, x2)) = x2   
POL(appendcB_in_gaa(x1)) = 1 + x1   
POL(appendcB_out_gaa(x1, x2)) = x2   
POL(cons(x1)) = 1 + x1   
POL(nil) = 0   
POL(reversecA_in_ga(x1)) = x1   
POL(reversecA_out_ga(x1, x2)) = x2   

The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:

reversecA_in_ga(nil) → reversecA_out_ga(nil, nil)
reversecA_in_ga(cons(nil)) → reversecA_out_ga(cons(nil), cons(nil))
reversecA_in_ga(cons(X2)) → U10_ga(X2, reversecA_in_ga(X2))
U10_ga(X2, reversecA_out_ga(X2, X4)) → U11_ga(X2, appendcB_in_gaa(X4))
appendcB_in_gaa(nil) → appendcB_out_gaa(nil, cons(nil))
appendcB_in_gaa(cons(X2)) → U12_gaa(X2, appendcB_in_gaa(X2))
U11_ga(X2, appendcB_out_gaa(X4, X3)) → reversecA_out_ga(cons(X2), X3)
U12_gaa(X2, appendcB_out_gaa(X2, X4)) → appendcB_out_gaa(cons(X2), cons(X4))

(25) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U6_GAA(X1, reversecA_out_ga(X1, cons(X3))) → PC_IN_GAA(X3)

The TRS R consists of the following rules:

reversecA_in_ga(nil) → reversecA_out_ga(nil, nil)
reversecA_in_ga(cons(nil)) → reversecA_out_ga(cons(nil), cons(nil))
reversecA_in_ga(cons(X2)) → U10_ga(X2, reversecA_in_ga(X2))
U10_ga(X2, reversecA_out_ga(X2, X4)) → U11_ga(X2, appendcB_in_gaa(X4))
appendcB_in_gaa(nil) → appendcB_out_gaa(nil, cons(nil))
appendcB_in_gaa(cons(X2)) → U12_gaa(X2, appendcB_in_gaa(X2))
U12_gaa(X2, appendcB_out_gaa(X2, X4)) → appendcB_out_gaa(cons(X2), cons(X4))
U11_ga(X2, appendcB_out_gaa(X4, X3)) → reversecA_out_ga(cons(X2), X3)

The set Q consists of the following terms:

reversecA_in_ga(x0)
U10_ga(x0, x1)
appendcB_in_gaa(x0)
U12_gaa(x0, x1)
U11_ga(x0, x1)

We have to consider all (P,Q,R)-chains.

(26) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(27) TRUE